#include <iostream>
#include <map>

std::pair<bool,int> getValue()
{
    std::pair<bool,int> p;
    p.first = true;
    p.second = 10;
    return p;
}

int main()
{
    // //对组
    // std::pair<int,std::string> p(1,"张三");
    // p.first = 2;
    // std::cout<<p.first<<" "<<p.second<<std::endl;

    // auto pair = getValue();
    // if(pair.first == false)
    // {
    //     std::cout<<"获取值失败!\n";
    // }
    // else
    // {
    //     std::cout<<pair.second<<std::endl;
    // }

    //std::set<std::pair<>>

    //map容器会按照对组的第一个参数排序
    std::map<int,std::string> m;
    m.insert(std::pair<int,std::string>(1,"zhangsan"));
    m.insert(std::make_pair<int,std::string>(3,"wangwu"));
    m.insert({2,"lisi"});
    //insert 不支持插入已有的key  key值存在 不会修改另一个值
    m.insert({2,"李四"});

    //key值存在 修改value key值不存在 插入value
    m[1] = "张三";
    m[5] = "王五";

    //insert_or_assign = operator[]  key值存在修改 key之不存在插入
    m.insert_or_assign(2,"李四");
    m.insert_or_assign(6,"李四");

    m.erase(2);
    for(auto ite = m.begin(); ite != m.end(); ite++)
    {
        std::cout<<ite->first<<" "<<ite->second<<std::endl;
    }
    auto ite = m.find(3);
    if(ite == m.end())
    {
        std::cout<<"没找到"<<std::endl;
    }
    else
    {
        std::cout<<ite->first<<" "<<ite->second<<std::endl;
    }
    
    return 0;
}